Корневое хранилище можно воспринимать как файл, в котором хранятся других хранилища. Корневое хранилище по английски Root Storage. Для его создания используется функция StgCreateDocfile().
WINOLEAPI StgCreateDocfile ( const OLECHAR FAR* pwcsName, // имя файла DWORD grfMode, // Константы доступа корневого хранилища DWORD reserved, // зарезервированно IStorage FAR * FAR *ppstgOpen // указатель на получаемый интерфейс );
Давайте создадим:
// TestDtg.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "windows.h"
#include "ole2.h"
#include "iostream.h"
int main(int argc, char* argv[])
{
LPSTORAGE temp=NULL;
OLECHAR filename[20];
wcscpy(filename,L"test.stg");
HRESULT hr=StgCreateDocfile(filename, STGM_CREATE | STGM_WRITE |
STGM_SHARE_EXCLUSIVE,0,&temp);
if (!FAILED(hr))
{
cout << "Ok create" << endl;
}
else cout << "Error create" << endl;
return 0;
}
В результате у нас в рабочем каталоге будет файл. Давайте посмотрим на него в блокноте.

Как видите в нем уже есть информация. Если сравните его с созданием текстового файла, то увидите, что в данном случае все сложнее. В файл уже записана информация для инициализации.